package vip.ifmm.lehouse.api.gateway.controller.user;

import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.*;
import vip.ifmm.lehouse.common.dto.ServerResponse;
import vip.ifmm.lehouse.common.model.User;
import vip.ifmm.lehouse.user.service.api.UserInfoService;

/**
 * @author: mackyhuang
 * <p>email: mackyhuang@163.com <p>
 * <p>date: 2019/6/17 </p>
 */
@RestController
@RequestMapping(value = "/user")
public class UserInfoController {

    @Reference(owner = "mackyhuang")
    private UserInfoService userInfoService;

    /**
     * 更新用户信息
     * @param user userId是必须的
     * @return 更新结果
     */
    @PutMapping("/userInfo")
    public ServerResponse updateUserinfo(User user){
        return userInfoService.updateUserInfo(user);
    }

    /**
     * 根据用户userId获取用户信息
     * @param userId 用户主键
     * @return 指定userId的User对象
     */
    @GetMapping("/userInfo/{userId}")
    public ServerResponse getUserInfoByUserId(@PathVariable("userId") Integer userId){
        return userInfoService.getUserInfo(userId);
    }

    /**
     * 用于前端修改用户名时判断当前用户名是否可用
     * @param nickname 用户名
     * @return 是否可用
     */
    @GetMapping("/isNicknameUsed/{nickname}")
    public ServerResponse isNicknameUsed(@PathVariable("nickname") String nickname){
        return userInfoService.nicknameExisted(nickname);
    }

    /**
     * 上传头像，将已经存储的图像路径上传至User库中
     * @param userId 指定userId
     * @param headImagePath 头像在服务器中的具体路径
     * @return 更新结果
     */
    @PutMapping("/userInfo/headImage")
    public ServerResponse updateHeadImage(Integer userId, String headImagePath){
        User user = User.builder().userId(userId).userHeadImage(headImagePath).build();
        return userInfoService.updateHeadImage(user);
    }
}
